package com.zjsru.oneDay202203;

/**
 * @Author: likew
 * @Date: 2022/3/29
 * 考试的最大困扰度
 *
 * 输入：answerKey = "TTFF", k = 2
 * 输出：4
 * 解释：我们可以将两个 'F' 都变为 'T' ，得到 answerKey = "TTTT" 。
 * 总共有四个连续的 'T' 。
 *
 * 输入：answerKey = "TFFT", k = 1
 * 输出：3
 * 解释：我们可以将最前面的 'T' 换成 'F' ，得到 answerKey = "FFFT" 。
 * 或者，我们可以将第二个 'T' 换成 'F' ，得到 answerKey = "TFFF" 。
 * 两种情况下，都有三个连续的 'F' 。
 *
 *
 */
public class maxConsecutiveAnswers {
    public int maxConsecutiveAnswers(String answerKey, int k) {
        //滑动窗口应用 (T、F都能替换)
        int lcnt = 0,rcnt = 0, ans = 0;
        int left = 0;
        for (int right= 0; right < answerKey.length() ; right++) {
            //move right
            if ( answerKey.charAt(right) == 'T'){
                rcnt++;
            }else{
                lcnt++;
            }
            //move left
            while(Math.min(rcnt,lcnt) > k){
                if (answerKey.charAt(left) == 'T'){
                    rcnt--;
                }else{
                    lcnt--;
                }
                left++;
            }
            //update 结果
            ans = Math.max(ans,right - left+1);
        }
        return ans;
    }
    
    public static void main(String[] args) {
        maxConsecutiveAnswers maxConsecutiveAnswers = new maxConsecutiveAnswers();
        String answerKey = "TTFTTFTT";
        int k = 1;
        System.out.println(maxConsecutiveAnswers.maxConsecutiveAnswers(answerKey, k));
    }
}
